package co.edu.uniquindio.logica;

import java.io.Serializable;
import java.util.List;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Comprador
 * @author Luis Enrique Robledo
 * @author Andres Felipe Abril
 *
 */
@Entity
@Table(name="Comprador")
public class Comprador extends Persona implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * esta relacion representa puede haber un compradores puede estar en muchas subastas
	 */
    @ManyToMany(mappedBy = "compradores") 
	private List<Subasta> subastas;
    /**
	 * esta relacion representa que un comprador puede hacer muchas calificaciones
	 */
    @OneToMany(mappedBy = "comprador")
	private List<Calificacion> calificaciones;
    /**
	 * esta relacion representa que un comprador puede hacer muchas ofertas
	 */
    @OneToMany(mappedBy = "comprador")
	private List<Oferta> ofertas;
	
    /**
	 * este es un constructor que no recive parametros de la entidad 
	 * que todas las entidades deben tener
	 */
	public Comprador() {
		super();
	}
	/**
	 * este metodo permite la creacion de un comprador
	 * @param cedula
	 * @param correo
	 * @param nombre
	 * @param pais
	 * @param alias
	 */
	public Comprador(String cedula, String correo, String nombre, Pais pais,
			String alias,String contrasenia) {
		super(cedula, correo, nombre, pais, alias, contrasenia);
		// TODO Auto-generated constructor stub
	}

	/**
	 * metodo que retorna una lista de las subastas en donde esta implicado el comprador
	 * @return the subastas
	 */
	public List<Subasta> getSubastas() {
		return subastas;
	}

	/**
	 * metodo que permite modificar las subastas asociadas al comprador
	 * @param subastas the subastas to set
	 */
	public void setSubastas(List<Subasta> subastas) {
		this.subastas = subastas;
	}

	/**
	 * metodo que retorna la lista de calificaciones hechas por el comprador
	 * @return the calificacion
	 */
	public List<Calificacion> getCalificacion() {
		return calificaciones;
	}

	/**
	 * metodo que permite especificar la lista de calificacines del comprador
	 * @param calificacion the calificacion to set
	 */
	public void setCalificacion(List<Calificacion> calificacion) {
		this.calificaciones = calificacion;
	}

	/**
	 * metodo que permite obtener las ofertas del comprador
	 * @return the ofertas
	 */
	public List<Oferta> getOfertas() {
		return ofertas;
	}

	/**
	 * metodo que permite modificar las ofertas del comprador 
	 * @param ofertas the ofertas to set
	 */
	public void setOfertas(List<Oferta> ofertas) {
		this.ofertas = ofertas;
	}
   
}
